//package me.firstapp.service.weixin.huafei.impl;
//
//import java.math.BigDecimal;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.http.HttpMethod;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.client.RestTemplate;
//
//import com.alibaba.fastjson.JSONObject;
//
//import me.firstapp.common.exception.ServiceException;
//import me.firstapp.common.utils.StrUtils;
//import me.firstapp.module.weixin.order.MobileFareOrder;
//
//public class MobileUtils {
//
//	private static Logger logger = LoggerFactory.getLogger(MobileUtils.class);
//
//	private static final String OPENID = "JH388c46b51ed6fb34ed01ef72887607ee";
//	private static final String APPKEY = "699baa3d6266d32d00badb3893e41d53";
//
//	public static MobileFareOrder doRecharge(MobileFareOrder mobileFareOrder) {
//		// 调用话费充值接口
//		try {
//			String RECHARGE_URL = "http://op.juhe.cn/ofpay/mobile/onlineorder";
//			RestTemplate restTemplate = new RestTemplate();
//			StringBuilder url = new StringBuilder(RECHARGE_URL);
//			url.append("?key=").append(APPKEY);
//			url.append("&phoneno=").append(mobileFareOrder.getMobile());
//			url.append("&cardnum=").append(mobileFareOrder.getValue().intValue());
//			url.append("&orderid=").append(mobileFareOrder.getOrderNo());
//			String signStr = String
//					.valueOf(OPENID + APPKEY + mobileFareOrder.getMobile() + mobileFareOrder.getValue().intValue())
//					+ mobileFareOrder.getOrderNo();
//
//			url.append("&sign=").append(getMd5(signStr.getBytes()));
//			ResponseEntity<String> responseEntity = restTemplate.exchange(url.toString(), HttpMethod.POST, null,
//					String.class);
//			String resultStr = responseEntity.getBody();
//			logger.info("调用话费充值接口返回结果为：" + resultStr);
//			System.out.println("调用话费充值接口返回结果为：" + resultStr);
//			if (StrUtils.isNotNULL(resultStr)) {
//				JSONObject jsonObject = JSONObject.parseObject(resultStr);
//				if (null != jsonObject) {
//					// int error_code = jsonObject.getIntValue("error_code");
//					String reason = jsonObject.getString("reason");
//					mobileFareOrder.setRechargeMsg(reason);
//					JSONObject resultObject = jsonObject.getJSONObject("result");
//					if (null == resultObject) {// 重复的订单号
//						getRecharge(mobileFareOrder);
//					} else {
//						if (null != resultObject) {
//							mobileFareOrder.setOutOrderNo(resultObject.getString("sporder_id"));
//							mobileFareOrder.setRechargeFee(resultObject.getDoubleValue("ordercash") + "");
//							mobileFareOrder.setRechargeStatus(MobileFareOrder.RECHARGE_STATUS_ING);
//						}
//					}
//
//				}
//			}
//
//			return mobileFareOrder;
//		} catch (ServiceException e) {
//			e.printStackTrace();
//			throw new ServiceException(e.getStatusObject());
//		} catch (NoSuchAlgorithmException e) {
//			e.printStackTrace();
//			throw new ServiceException("error", "发生未知错误");
//		} catch (Exception e) {
//			e.printStackTrace();
//			throw new ServiceException("error", "发生未知错误");
//		}
//	}
//
//	private static String getMd5(byte[] buffer) throws NoSuchAlgorithmException {
//		String s = null;
//		char hexDigist[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
//		MessageDigest md = MessageDigest.getInstance("MD5");
//		md.update(buffer);
//		byte[] datas = md.digest(); // 16个字节的长整数
//		char[] str = new char[2 * 16];
//		int k = 0;
//		for (int i = 0; i < 16; i++) {
//			byte b = datas[i];
//			str[k++] = hexDigist[b >>> 4 & 0xf];// 高4位
//			str[k++] = hexDigist[b & 0xf];// 低4位
//		}
//		s = new String(str);
//		return s;
//	}
//
//	public static MobileFareOrder getRecharge(MobileFareOrder mobileFareOrder) {
//		String getRechargeUrl = "http://op.juhe.cn/ofpay/mobile/ordersta";
//		RestTemplate restTemplate = new RestTemplate();
//		StringBuilder url = new StringBuilder(getRechargeUrl);
//		url.append("?key=").append(APPKEY);
//		url.append("&orderid=").append(mobileFareOrder.getOrderNo());
//		ResponseEntity<String> responseEntity = restTemplate.exchange(url.toString(), HttpMethod.GET, null,
//				String.class);
//		String resultStr = responseEntity.getBody();
//		logger.info("调用话费充值状态查询接口返回结果为：" + resultStr);
//		System.out.println("调用话费充值状态查询接口返回结果为：" + resultStr);
//		if (StrUtils.isNotNULL(resultStr)) {
//			JSONObject jsonObject = JSONObject.parseObject(resultStr);
//			// int error_code = jsonObject.getIntValue("error_code");
//			String reason = jsonObject.getString("reason");
//			mobileFareOrder.setRechargeMsg(reason);
//			JSONObject resultObject = jsonObject.getJSONObject("result");
//			if (null != resultObject) {
//				mobileFareOrder.setRechargeStatus(Integer.valueOf(resultObject.getString("game_state")));
//				mobileFareOrder.setOutOrderNo(resultObject.getString("sporder_id"));
//				mobileFareOrder.setRechargeFee(resultObject.getString("uordercash"));
//			}
//		}
//		return mobileFareOrder;
//	}
//
//	public static int telcheck(String cardnum, String phoneno) {
//		String CHECK_URL = "http://op.juhe.cn/ofpay/mobile/telcheck";
//		RestTemplate restTemplate = new RestTemplate();
//		StringBuilder url = new StringBuilder(CHECK_URL);
//		url.append("?cardnum=").append(cardnum);
//		url.append("&phoneno=").append(phoneno);
//		url.append("&key=").append(APPKEY);
//		ResponseEntity<String> responseEntity = restTemplate.exchange(url.toString(), HttpMethod.POST, null,
//				String.class);
//		String resultStr = responseEntity.getBody();
//		logger.info("调用检查手机号码是否能充值接口返回的结果为：" + resultStr);
//		System.out.println("调用检查手机号码是否能充值接口返回的结果为：" + resultStr);
//		JSONObject jsonObject = JSONObject.parseObject(resultStr);
//		int error_code = jsonObject.getIntValue("error_code");
//		return error_code;
//	}
//
//	public static void main(String[] args) {
//		int error_code = telcheck("10", "17782561061");
//		System.out.println("检查是否可充值error_code:" + error_code);
//		MobileFareOrder mobileFareOrder = new MobileFareOrder();
//		mobileFareOrder.setMobile("17782561061");
//		mobileFareOrder.setValue(new BigDecimal(10.0000));
//		mobileFareOrder.setOrderNo("M1234237892332834");
//		// mobileFareOrder = doRecharge(mobileFareOrder);
//		mobileFareOrder = getRecharge(mobileFareOrder);
//		System.out.println(JSONObject.toJSONString(mobileFareOrder));
//	}
//}
